package org.example.pms.controller;

import org.example.pms.domain.Patient;
import org.example.pms.domain.vo.PatientCaseVo;
import org.example.pms.service.PatientService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/patients")
public class PatientController {

    @Resource
    private PatientService patientService;

    /**
     * 获取所有患者
     *
     * @return 患者信息列表
     */
    @GetMapping
    public ResponseEntity<List<Patient>> getAllPatients() {
        List<Patient> patients = patientService.getPatients(new Patient());
        return ResponseEntity.ok(patients);
    }

    /**
     * 根据ID获取患者基本信息
     *
     * @param id 患者自增id
     * @return 患者信息
     */
    @GetMapping("/{id}")
    public ResponseEntity<Patient> getPatientById(@PathVariable("id") Integer id) {
        Patient patient = patientService.getPatient(id);
        return patient != null ? ResponseEntity.ok(patient) : ResponseEntity.notFound().build();
    }

    /**
     * 根据患者ID获取患者病例
     *
     * @param patientId 患者id
     * @return 患者病案信息
     */
    @GetMapping("/{patientId}/case")
    public ResponseEntity<PatientCaseVo> getPatientCaseByPatientId(@PathVariable("patientId") Integer patientId) {
        PatientCaseVo patientCase = patientService.getPatientCaseByPatientId(patientId);
        return patientCase != null ? ResponseEntity.ok(patientCase) : ResponseEntity.notFound().build();
    }

    /**
     * 创建新的患者
     *
     * @param patient 患者信息
     * @return 患者信息
     */
    @PostMapping()
    public ResponseEntity<Patient> createPatient(@RequestBody Patient patient) {
        Integer i = patientService.savePatient(patient);
        return ResponseEntity.status(HttpStatus.CREATED).body(patient);
    }

//    // 更新患者信息
//    @PutMapping("/{id}")
//    public ResponseEntity<Patient> updatePatient(@PathVariable("id") Integer id, @RequestBody Patient patient) {
//        patient.setId(id);
//        patientService.updatePatient(patient);
//        return ResponseEntity.ok(patient);
//    }
//
//    // 删除患者
//    @DeleteMapping("/{id}")
//    public ResponseEntity<Void> deletePatient(@PathVariable("id") Integer id) {
//        patientService.deletePatient(id);
//        return ResponseEntity.noContent().build();
//    }
}
